
function [freq, spectrum] = plotCustomSpectrum_method2(data,raw_fs,OSR,spectrum_type,plot_title)
    % PLOTCUSTOMSPECTRUM 计算信号频谱并绘图
    % 输入：
    %   data      - 输入信号（一维向量）
    %   N         - 波形采样点个数
    %   Fs        - 采样频率
    %   plot_title- figure窗口标题
    % 输出：
    %   freq      - 频率向量（Hz）
    %   spectrum  - 频谱幅度


    % %clc;
    % clear;
    Fs = raw_fs*OSR;

    % data = zeros(1,65535);
    N = fix(length(data)/(Fs));
    if(N<1)
        error("频谱分析数据量必须大于当前采样率下1秒的采样点数.\n");
    end
    N = Fs*N;
    Custom_data = data(fix((length(data)-N)/2)+1 :fix((length(data)-N)/2)+N);

    Y = fft(Custom_data,N);


    % 幅度谱计算
    P2 = abs(Y / N);          % 双边幅度谱归一化
    P1 = P2(1:floor(N/2)+1); % 单边幅度谱
    P1(2:end-1) = 2 * P1(2:end-1); % 能量校正[3,9](@ref)
    spectrum = P1;

    % 生成频率轴
    freq = Fs * (0:length(spectrum)-1) / N;

    % 转换为dB单位
    if(spectrum_type == "power")
        spectrum = 10 * log10(spectrum.^2/2 );
        y_str = "功率 (dB)";
    else
        spectrum = 20 * log10(spectrum );
        y_str = "幅度 (dB)";
    end


    % ==== 绘图 ====
    figure;
    hold on;

    % ==== 主瓣和噪声划分 ====
    mainlobe_mask = freq <= 20000;  % 主瓣定义为 0~20kHz
    noise_mask    = ~mainlobe_mask;

    % 主瓣用红色线绘制
    plot(freq(mainlobe_mask), spectrum(mainlobe_mask), 'r', 'LineWidth', 1.5);
    % 噪声用蓝色线绘制
    plot(freq(noise_mask), spectrum(noise_mask), 'b--', 'LineWidth', 1);
    % 画辅助线标注主瓣界限
    ylimits = ylim;
    line([22000 22000], ylimits, 'Color', [0.5 0.5 0.5], 'LineStyle', ':');

    % 图形设置
    xlabel('频率 (Hz)');
    ylabel(y_str);
    title(sprintf('%s\n主瓣 vs 噪声对比(主瓣 ≤ 20KHz)', plot_title));
    legend('主瓣频段 (≤20KHz)', '噪声频段 (>20KHz)', 'Location', 'best');
    xlim([0, min(Fs/2, 100e3)]);
    grid on;
end